
Техническое описание программы acpi_menu

Команда для компиляции: gcc -o mAcpi mAcpi.c -lncursesw

Эта программа на языке C использует библиотеку ncurses для создания интерактивного меню в терминале, предоставляющего информацию о утилите `acpi` в Linux. Она отображает список опций и описаний, связанных с `acpi`, с поддержкой навигации и выбора пунктов. Ниже приведено подробное описание её функциональности:

1. **Компиляция и зависимости**:
   - Для компиляции требуется библиотека `ncursesw` (широкие символы для поддержки UTF-8).
   - Команда: `gcc -o acpi_menu acpi_menu.c -lncursesw`.

2. **Инициализация**:
   - Устанавливает локаль `ru_RU.UTF-8` для поддержки русского языка.
   - Инициализирует ncurses (`initscr`), проверяет поддержку цветов и отключает эхо ввода, активирует клавиши управления (стрелки).
   - Скрывает курсор и устанавливает обработчик SIGINT для корректного завершения (`cleanup`).

3. **Цветовые пары**:
   - Определяет 6 цветовых пар:
     - 1: Чёрный текст на жёлтом фоне (рамки, выделение).
     - 2: Жёлтый текст на чёрном фоне (заголовки, линии).
     - 3: Голубой текст (для "Git").
     - 4: Зелёный текст (пункты меню).
     - 5: Белый текст (основной текст).
     - 6: Тёмно-белый текст (дополнительный).

4. **Меню**:
   - Содержит 19 пунктов, включая "Установка", "Краткий обзор", "Описание", "Автор", опции `acpi` (например, `-b --battery`, `-t --thermal`), "Git" и "Exit".
   - Пункты хранятся в массиве `items` как широкие строки (`wchar_t`) для поддержки UTF-8.

5. **Интерфейс (`draw_menu`)**:
   - Рисует рамку с одинарными линиями (80 столбцов, 31 строка) с жёлтыми краями.
   - Добавляет горизонтальные разделители на строках 3, 5, 10, 25.
   - Заголовок "*** acpi ***" (жирный белый), подзаголовок "Shows battery status and other ACPI information" (тусклый).
   - Подсказка навигации ("↑ Up ─ ↓ Down ─ ↵ Select Enter") внизу жёлтым цветом.

6. **Отображение пунктов (`print_menu_items`)**:
   - Пункты меню выводятся на заданных строках (6–9, 12–24, 26, 28).
   - Выбранный пункт выделяется чёрным текстом на жёлтом фоне.
   - Остальные пункты — зелёным текстом, с выравниванием описания и опции.

7. **Навигация и выбор**:
   - Стрелки вверх/вниз изменяют `selected` (циклически от 0 до 18).
   - Enter (код 10) очищает экран и показывает информацию о выбранном пункте:
     - "Установка": "Утилита предустановлена."
     - "Краткий обзор": "acpi [options]".
     - "Описание": Информация о выводе ACPI из файловой системы.
     - "Автор": Сведения об авторах и лицензии GNU GPL.
     - Опции `acpi`: Краткие описания и команды (например, `acpi -b`, `acpi --battery`).
     - "Git": Пустой список репозиториев (заглушка).
     - "Exit": Завершает программу.
   - После вывода появляется кнопка "ENTER = Main Menu" для возврата.

8. **Завершение (`cleanup`)**:
   - Вызывается при SIGINT или выборе "Exit", завершает ncurses (`endwin`) и выходит.

9. **Особенности**:
   - Поддержка русского языка через UTF-8 и `ncursesw`.
   - Цветовое выделение для улучшения читаемости.
   - Интерактивная навигация с помощью стрелок и Enter.

10. **Использование**:
    - После компиляции запустите: `./acpi_menu`.
    - Навигация: стрелки вверх/вниз, выбор — Enter, выход — выбор "Exit" или `Ctrl+C`.

Программа предназначена для пользователей Linux, желающих изучить возможности `acpi` через удобный текстовый интерфейс с поддержкой русского языка.
